home *** CD-ROM | disk | FTP | other *** search
- #include "RDriver.h"
- #include "RDriverInt.h"
- #include "FileUtils.h"
-
- #define RSRCNAME "\pRsrc Plug Sys##"
-
- static MADLibrary *inMADDriver;
-
- OSErr CheckMADFile( Ptr name)
- {
- UNFILE refNum;
- char charl[ 20];
- OSErr err;
-
- refNum = iFileOpen( name);
- if( !refNum) return -1;
- else
- {
- iRead( 10, charl, refNum);
-
- if( charl[ 0] == 'M' &&
- charl[ 1] == 'A' &&
- charl[ 2] == 'D' &&
- charl[ 3] == 'H') err = noErr;
- else err = -1;
-
- iClose( refNum);
- }
-
- return err;
- }
-
- OSErr TESTmain( OSType order, Ptr AlienFileName, MADMusic *MadFile, PPInfoRec *info, MADDriverSettings *init);
-
- OSErr CallImportPlug( short PlugNo, // CODE du plug
- OSType order,
- Ptr AlienFile,
- MADMusic *theNewMAD,
- PPInfoRec *info)
- {
- OSErr myErr;
- short fileID;
-
- myErr = noErr;
-
- //myErr = (*inMADDriver->ThePlug[ PlugNo].IOPlug) (order, AlienFile, theNewMAD, info, &inMADDriver->DriverSettings);
-
- return( myErr);
- }
-
- OSErr PPTestFile( char *kindFile, Ptr AlienFile)
- {
- short i;
- MADMusic aMAD;
- PPInfoRec InfoRec;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
- {
- return( CallImportPlug( i, 'TEST', AlienFile, &aMAD, &InfoRec));
- }
- }
- return MADCannotFindPlug;
- }
-
- OSErr PPInfoFile( char *kindFile, FSSpec *AlienFile, PPInfoRec *InfoRec)
- {
- short i;
- MADMusic aMAD;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
- {
- return( CallImportPlug( i, 'INFO', AlienFile, &aMAD, InfoRec));
- }
- }
- return MADCannotFindPlug;
- }
-
- OSErr PPExportFile( char *kindFile, FSSpec *AlienFile, MADMusic *theNewMAD)
- {
- short i;
- PPInfoRec InfoRec;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
- {
- return( CallImportPlug( i, 'EXPL', AlienFile, theNewMAD, &InfoRec));
- }
- }
- return MADCannotFindPlug;
- }
-
- OSErr PPImportFile( char *kindFile, FSSpec *AlienFile, MADMusic *theNewMAD)
- {
- short i;
- PPInfoRec InfoRec;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type))
- {
- return( CallImportPlug( i, 'IMPL', AlienFile, theNewMAD, &InfoRec));
- }
- }
- return MADCannotFindPlug;
- }
-
- OSErr PPIdentifyFile( char *type, Ptr AlienFile)
- {
- FILE* refNum;
- short i;
- PPInfoRec InfoRec;
- OSErr iErr;
-
- strcpy( type, "!!!!");
-
- // Check if we have access to this file
- refNum = iFileOpen( AlienFile);
- if( !refNum) return -1;
- iClose( refNum);
-
- // Is it a MAD file?
- iErr = CheckMADFile( AlienFile);
- if( iErr == noErr)
- {
- strcpy( type, "MADH");
- return noErr;
- }
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( CallImportPlug( i, 'TEST', AlienFile, 0L, &InfoRec) == noErr)
- {
- strcpy( type, inMADDriver->ThePlug[ i].type);
-
- return noErr;
- }
- }
-
- strcpy( type, "!!!!");
-
- return MADCannotFindPlug;
- }
-
- Boolean MADPlugAvailable( char *kindFile)
- {
- short i;
-
- if( !strcmp( kindFile, "MADH")) return true;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- if( !strcmp( kindFile, inMADDriver->ThePlug[ i].type)) return true;
- }
- return false;
- }
-
- typedef OSErr (*PLUGFILLDLLFUNC) ( PlugInfo*);
-
- Boolean LoadPlugLib( Ptr name, PlugInfo* plug)
- {
- PLUGFILLDLLFUNC fpFuncAddress;
- OSErr err;
-
- strcpy( plug->file, name);
-
- /* plug->hLibrary = LoadLibrary( name);
- if( !plug->hLibrary) return false;
-
- plug->IOPlug = (PLUGDLLFUNC) GetProcAddress( plug->hLibrary, "main");
- if( !plug->IOPlug) return false;
-
- fpFuncAddress = (PLUGFILLDLLFUNC) GetProcAddress( plug->hLibrary, "FillPlug");
- if( !fpFuncAddress) return false;
-
- err = (*fpFuncAddress)( plug);
- */
- return true;
- }
-
- void MInitImportPlug( char *PlugsFolderName)
- {
- inMADDriver = MADGetMADLibraryPtr();
-
- ///////////
- inMADDriver->TotalPlug = 0;
- ///////////
-
- /* {
- HANDLE hFind;
- WIN32_FIND_DATA fd;
- BOOL bRet = TRUE;
- char FindFolder[ 200], inPlugsFolderName[ 200];
-
- if( PlugsFolderName)
- {
- strcpy( inPlugsFolderName, PlugsFolderName);
- strcat( inPlugsFolderName, "/");
-
- strcpy( FindFolder, inPlugsFolderName);
- }
- else
- {
- strcpy( inPlugsFolderName, "/");
- strcpy( FindFolder, inPlugsFolderName);
- }
- strcat( FindFolder, "*.PLG");
-
- hFind = FindFirstFile( FindFolder, &fd);
-
- inMADDriver->ThePlug = (PlugInfo*) MADNewPtr( MAXPLUG * sizeof( PlugInfo), &inMADDriver->DriverSettings);
-
- while( hFind != INVALID_HANDLE_VALUE && bRet)
- {
- if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
- {
- if( inMADDriver->TotalPlug < MAXPLUG)
- {
- char myCompleteFilename[ 200];
-
- strcpy( myCompleteFilename, inPlugsFolderName);
- strcat( myCompleteFilename, fd.cFileName);
-
- if( LoadPlugLib( myCompleteFilename, &inMADDriver->ThePlug[ inMADDriver->TotalPlug])) inMADDriver->TotalPlug++;
- }
- }
-
- bRet = FindNextFile( hFind, &fd);
- }
-
- FindClose( hFind);
- }*/
- ///////////
- }
-
- void CloseImportPlug()
- {
- short i;
-
- for( i = 0; i < inMADDriver->TotalPlug; i++)
- {
- // FreeLibrary( inMADDriver->ThePlug[ i].hLibrary);
- }
- }